| Miles Sound System SDK 7.2a |
The GLIB program creates Global Timbre Library files for use by Miles Sound System Extended MIDI (XMIDI) driver applications.
The Global Timbre Library, or GTL, is the set of timbres, or sound description data for musical instruments or sound effects, which are intended for use by a given synthesizer during the course of an entire Miles Sound System application. Each supported synthesizer may have its own timbre data format, so an application may need as many GTL files as it has XMIDI drivers. Many synthesizers (such as the Ad Lib) contain no built-in timbres, and thus require at least a small GTL file in order to make any sounds at all. Others, such as the Roland MT-32, contain a number of built-in timbres, and do not require GTL support unless the musician wishes to supplement the built-in timbres with "custom" timbres created with a third-party editor program.
GLIB is responsible for creating each Global Timbre Library file according to instructions in a standard ASCII catalog file, or "catfile." The catfile is created by a musician or programmer who is responsible for deciding how some or all of the 128 possible MIDI Program Change ("Patch") numbers are mapped to as many as 16,000 possible timbres of both the built-in and custom types, at various points during the application's execution. A single catfile may serve as the "script" for every Global Timbre Library file used by an application, but the usual practice is to maintain a separate catfile for each individual synthesizer's GTL file.
Each timbre specification in the GLIB catalog file consists of an assignment statement of the form.
timbre(bank,patch) = ...
In an assignment statement, the '...' expression on the right side of the assignment statement (or rvalue) tells GLIB where to find the source data for the timbre (in an Ad Lib Instrument Maker bankfile, for example). The timbre( ) expression on the left (or lvalue) specifies the destination "address" of the timbre in the Global Timbre Library file being created. This "address" consists of a timbre bank number and a patch (MIDI Program Change number) mapping for the timbre. A musician who is composing a MIDI sequence for use with an MSS XMIDI driver may "request" that a custom timbre be associated with a particular patch during playback, simply by prefixing each MIDI Program Change message in the sequence with an XMIDI Patch Bank Select controller (114) which specifies the bank number under which the desired timbre for the patch was stored in the Global Timbre Library file. For each synthesizer, only one timbre may be mapped to a particular patch at any given time.
The nature of the '...' rvalue expression depends on the GTL file's target synthesizer. The following rvalue expressions are currently supported by GLIB:
BNK_inst(string,num): Refers to the name of an Ad Lib instrument to be found in an Ad Lib Instrument Maker bankfile which was previously specified with a BNK_file( ) expression (see below). num normally specifies the number of semitones by which to transpose notes played with the instrument. (This value is added to any transposition value specified with the Ad Lib Gold Instrument Maker.) If the timbre is to be played in MIDI channel 10 (to emulate a Roland MT-32 rhythm key), num specifies the MIDI note number corresponding to the pitch at which the instrument should sound. In such a case, the bank number specified in the lvalue must be 127, while the patch number specifies the MIDI key number which causes the instrument to be played.
MTB_file("filename"): Refers to the name of a Big Noise MT-32 Editor/Librarian file containing a complete bank of 64 Roland MT-32 timbres. The 64 timbres will be mapped to 64 sequential patches beginning at the patch number given in the timbre( ) lvalue expression. (If this sequential mapping causes any timbre's patch number to exceed 127, the patch bank number is incremented at that point and the patch number itself is incremented modulo 128.) Note that only the timbres, or "tones," in the file are used by GLIB; the "bank timbre patch change" and "rhythm key table" information in the file is ignored.
BIN_file("filename"): Refers to the name of a binary file containing a single timbre image in the target Miles Sound System driver's native timbre format. This "generic" expression is useful in cases where the application designer wishes to use a proprietary editor with its own timbre file format, but is not otherwise needed.
In addition to timbre assignment statements, GLIB recognizes two "declarative" expressions:
outfile("filename"): Specifies the name of a Global Timbre Library to create. An outfile( ) specification must appear in the catfile before any timbres are assigned to the outfile. When this statement is encountered, any GTL file being created by a previous outfile( ) statement is closed and saved to disk.
BNK_file("filename"): Specifies the Ad Lib Instrument Maker bankfile from which subsequent BNK_inst( ) statements should retrieve timbres for inclusion in the Global Timbre Library file. The Ad Lib Instrument Maker program (version 1.5 or greater) is used to create the .BNK "source file" format for all Yamaha YM3812-based adapters, including the Ad Lib, Sound Blaster, Sound Blaster Pro, Pro Audio Spectrum, Thunderboard, and others.
Beginning with GLIB version 1.02, bankfiles from the Ad Lib Gold Instrument Maker program may be used interchangeably with those created by the original Ad Lib Instrument Maker. The Ad Lib Gold Instrument Maker may be used to create 4-operator timbres for the Ad Lib Gold card and other sound adapters based on the Yamaha YMF262 (OPL3) integrated circuit, as well as 2-operator timbres for standard YM3812-compatible adapters. To guard against inadvertent use of 4-operator timbres in GTL files intended for use with YM3812 drivers, GLIB will issue a warning message if any BNK_inst( ) statement assigns a 4-operator timbre to an output file whose suffix is ".AD".
All characters appearing on a line after a semicolon are considered to be comments, and ignored. Blank lines are also acceptable.
The catalog file used to create a Global Timbre Library is of extreme importance in determining how well a given XMIDI sequence will sound when "tweaked" for optimum Ad Lib playback quality. Supplied with the Miles Sound System is SAMPLE.CAT, a sample GLIB catalog file which creates an Ad Lib-compatible Global Timbre Library file, and SAMPLE.BNK, an Ad Lib Instrument Maker bankfile containing approximately 200 "canned" instruments supplied with the Ad Lib and Sound Blaster developer kits. The sample Ad Lib GTL file SAMPLE.AD was created by the following command:
GLIB sample.cat
The created SAMPLE.AD should be used only for development, testing, and experimental purposes, as its instruments are not "adjusted" with the Instrument Maker program to emulate the Roland synthesizer faithfully in important areas such as octave register, envelope timing, relative volume level, and general tonal quality. For shipping purposes, you should usually use The Fat Man's FM patches that are supplied in the /REDIST/DOS directory.
As an example of a GLIB catalog file, SAMPLE.CAT is reproduced here in its entirety.
;
;SAMPLE.CAT
;Global Timbre Library assignments for sample MSS V2.0 applications
;
;Usage: GLIB sample.cat
;
outfile("sample.ad") ;create Ad Lib Global Timbre Library
BNK_file("sample.bnk") ;name of Ad Lib Instrument Maker bankfile
;
;Bank 0: Melodic instruments to emulate Roland MT-32 built-in timbres
;
timbre(0,0) = BNK_inst("piano1",0) ;Acou Piano 1
timbre(0,1) = BNK_inst("piano3",0) ;Acou Piano 2
timbre(0,2) = BNK_inst("piano4",0) ;Acou Piano 3
timbre(0,3) = BNK_inst("elpiano1",0) ;Elec Piano 1
timbre(0,4) = BNK_inst("elpiano2",0) ;Elec Piano 2
timbre(0,5) = BNK_inst("elpiano1",0) ;Elec Piano 3
timbre(0,6) = BNK_inst("pianof",0) ;Elec Piano 4
timbre(0,7) = BNK_inst("piano1",0) ;Honkytonk
timbre(0,8) = BNK_inst("organ2",0) ;Elec Org 1
timbre(0,9) = BNK_inst("organ1",0) ;Elec Org 2
timbre(0,10) = BNK_inst("organ1",0) ;Elec Org 3
timbre(0,11) = BNK_inst("organ4",0) ;Elec Org 4
timbre(0,12) = BNK_inst("pipes",0) ;Pipe Org 1
timbre(0,13) = BNK_inst("pipes",0) ;Pipe Org 2
timbre(0,14) = BNK_inst("pipes",0) ;Pipe Org 3
timbre(0,15) = BNK_inst("accordn",0) ;Accordion
timbre(0,16) = BNK_inst("harpsi4",0) ;Harpsi 1
timbre(0,17) = BNK_inst("harpsi4",0) ;Harpsi 2
timbre(0,18) = BNK_inst("harpsi4",0) ;Harpsi 3
timbre(0,19) = BNK_inst("elclav2",0) ;Clavi 1
timbre(0,20) = BNK_inst("elclav2",0) ;Clavi 2
timbre(0,21) = BNK_inst("elclav2",0) ;Clavi 3
timbre(0,22) = BNK_inst("celesta",0) ;Celesta 1
timbre(0,23) = BNK_inst("celesta",0) ;Celesta 2
timbre(0,24) = BNK_inst("sftbrss1",0) ;Syn Brass 1
timbre(0,25) = BNK_inst("sftbrss1",0) ;Syn Brass 2
timbre(0,26) = BNK_inst("sftbrss1",0) ;Syn Brass 3
timbre(0,27) = BNK_inst("sftbrss1",0) ;Syn Brass 4
timbre(0,28) = BNK_inst("bass2",0) ;Syn Bass 1
timbre(0,29) = BNK_inst("bass2",0) ;Syn Bass 2
timbre(0,30) = BNK_inst("bass2",0) ;Syn Bass 3
timbre(0,31) = BNK_inst("bass2",0) ;Syn Bass 4
timbre(0,32) = BNK_inst("fantapan",0) ;Fantasy
timbre(0,33) = BNK_inst("mars",0) ;Harmo Pan
timbre(0,34) = BNK_inst("syn1",0) ;Chorale
timbre(0,35) = BNK_inst("tincan1",0) ;Glasses
timbre(0,36) = BNK_inst("mars",0) ;Soundtrack
timbre(0,37) = BNK_inst("moon",0) ;Atmosphere
timbre(0,38) = BNK_inst("trainbel",0) ;Warm Bell
timbre(0,39) = BNK_inst("synbass1",0) ;Funny Vox
timbre(0,40) = BNK_inst("bells",0) ;Echo Bell
timbre(0,41) = BNK_inst("bells",0) ;Ice Rain
timbre(0,42) = BNK_inst("oboe1",0) ;Oboe 2001
timbre(0,43) = BNK_inst("bass1",0) ;Echo Pan
timbre(0,44) = BNK_inst("bass2",0) ;Doctor Solo
timbre(0,45) = BNK_inst("bass2",0) ;Schooldaze
timbre(0,46) = BNK_inst("javaican",0) ;Bellsinger
timbre(0,47) = BNK_inst("csynth",0) ;Square Wave
timbre(0,48) = BNK_inst("strings1",0) ;Str Sect 1
timbre(0,49) = BNK_inst("strnlong",0) ;Str Sect 2
timbre(0,50) = BNK_inst("strings1",0) ;Str Sect 3
timbre(0,51) = BNK_inst("koto1",0) ;Pizzicato
timbre(0,52) = BNK_inst("violin",0) ;Violin 1
timbre(0,53) = BNK_inst("violin1",0) ;Violin 2
timbre(0,54) = BNK_inst("violin",0) ;Cello 1
timbre(0,55) = BNK_inst("cello",0) ;Cello 2
timbre(0,56) = BNK_inst("contrab",0) ;Contrabass
timbre(0,57) = BNK_inst("harp1",0) ;Harp 1
timbre(0,58) = BNK_inst("harp",0) ;Harp 2
timbre(0,59) = BNK_inst("guitar1",0) ;Guitar 1
timbre(0,60) = BNK_inst("guitar1",0) ;Guitar 2
timbre(0,61) = BNK_inst("elguit2",0) ;Elec Gtr 1
timbre(0,62) = BNK_inst("elguit1",0) ;Elec Gtr 2
timbre(0,63) = BNK_inst("sitar1",0) ;Sitar
timbre(0,64) = BNK_inst("bbass",0) ;Acou Bass 1
timbre(0,65) = BNK_inst("bass2",0) ;Acou Bass 2
timbre(0,66) = BNK_inst("bass2",0) ;Elec Bass 1
timbre(0,67) = BNK_inst("bass2",0) ;Elec Bass 2
timbre(0,68) = BNK_inst("bbass",0) ;Slap Bass 1
timbre(0,69) = BNK_inst("bbass",0) ;Slap Bass 2
timbre(0,70) = BNK_inst("bass1",0) ;Fretless 1
timbre(0,71) = BNK_inst("bass1",0) ;Fretless 2
timbre(0,72) = BNK_inst("flute1",0) ;Flute 1
timbre(0,73) = BNK_inst("flute1",0) ;Flute 2
timbre(0,74) = BNK_inst("flute1",0) ;Piccolo 1
timbre(0,75) = BNK_inst("flute1",0) ;Piccolo 2
timbre(0,76) = BNK_inst("flute2",0) ;Recorder
timbre(0,77) = BNK_inst("flute2",0) ;Pan Pipes
timbre(0,78) = BNK_inst("sax1",0) ;Sax 1
timbre(0,79) = BNK_inst("sax1",0) ;Sax 2
timbre(0,80) = BNK_inst("sax1",0) ;Sax 3
timbre(0,81) = BNK_inst("softsax",0) ;Sax 4
timbre(0,82) = BNK_inst("clar1",0) ;Clarinet 1
timbre(0,83) = BNK_inst("clarinet",0) ;Clarinet 2
timbre(0,84) = BNK_inst("oboe",0) ;Oboe
timbre(0,85) = BNK_inst("oboe",0) ;Engl Horn
timbre(0,86) = BNK_inst("bassoon",0) ;Bassoon
timbre(0,87) = BNK_inst("harmonca",0) ;Harmonica
timbre(0,88) = BNK_inst("trumpet4",0) ;Trumpet 1
timbre(0,89) = BNK_inst("trumpet4",0) ;Trumpet 2
timbre(0,90) = BNK_inst("tromb2",0) ;Trombone 1
timbre(0,91) = BNK_inst("tromb1",0) ;Trombone 2
timbre(0,92) = BNK_inst("frhorn1",0) ;Fr Horn 1
timbre(0,93) = BNK_inst("frhorn2",0) ;Fr Horn 2
timbre(0,94) = BNK_inst("tuba1",0) ;Tuba
timbre(0,95) = BNK_inst("brass1",0) ;Brs Sect 1
timbre(0,96) = BNK_inst("brass2",0) ;Brs Sect 2
timbre(0,97) = BNK_inst("vibra2",0) ;Vibe 1
timbre(0,98) = BNK_inst("vibra3",0) ;Vibe 2
timbre(0,99) = BNK_inst("marimba",0) ;Syn Mallet
timbre(0,100) = BNK_inst("belshort",0) ;Windbell
timbre(0,101) = BNK_inst("belshort",0) ;Glock
timbre(0,102) = BNK_inst("belshort",0) ;Tube Bell
timbre(0,103) = BNK_inst("xylofone",0) ;Xylophone
timbre(0,104) = BNK_inst("marimba",0) ;Marimba
timbre(0,105) = BNK_inst("koto1",0) ;Koto
timbre(0,106) = BNK_inst("fstrp2",0) ;Sho
timbre(0,107) = BNK_inst("flute",0) ;Shakuhachi
timbre(0,108) = BNK_inst("flute",0) ;Whistle 1
timbre(0,109) = BNK_inst("flute",0) ;Whistle 2
timbre(0,110) = BNK_inst("flute2",0) ;Bottleblow
timbre(0,111) = BNK_inst("flute2",0) ;Breathpipe
timbre(0,112) = BNK_inst("bdrum3",0) ;Timpani
timbre(0,113) = BNK_inst("tom",0) ;Melodic Tom
timbre(0,114) = BNK_inst("sdrum2",0) ;Deep Snare
timbre(0,115) = BNK_inst("synsnr1",0) ;Elec Perc 1
timbre(0,116) = BNK_inst("synsnr1",0) ;Elec Perc 2
timbre(0,117) = BNK_inst("synsnr2",0) ;Taiko
timbre(0,118) = BNK_inst("synsnr2",0) ;Taiko Rim
timbre(0,119) = BNK_inst("cymbal",0) ;Cymbal
timbre(0,120) = BNK_inst("shppizz",0) ;Castanets
timbre(0,121) = BNK_inst("triangle",0) ;Triangle
timbre(0,122) = BNK_inst("synbass4",0) ;Orche Hit
timbre(0,123) = BNK_inst("phone1",0) ;Telephone
timbre(0,124) = BNK_inst("chirp",0) ;Bird Tweet
timbre(0,125) = BNK_inst("mars",0) ;One Note Jam
timbre(0,126) = BNK_inst("bells",0) ;Water Bells
timbre(0,127) = BNK_inst("meri",0) ;Jungle Tune
;
;Rhythm key assignments (to Ad Lib melodic instruments)
;
;Played in channel 10 to emulate built-in Roland MT-32 rhythm sounds
;
;(Bank 127 reserved for use with "rhythm" emulation instruments)
;
timbre(127,35) = BNK_inst("bdrum",41) ;Acou BD
timbre(127,36) = BNK_inst("bdrum",41) ;Acou BD
timbre(127,37) = BNK_inst("tom",55) ;Rim Shot
timbre(127,38) = BNK_inst("snare2",60) ;Acou SD
timbre(127,39) = BNK_inst("snare2",60) ;Hand Clap
timbre(127,40) = BNK_inst("snare2",60) ;Elec SD
timbre(127,41) = BNK_inst("tom",41) ;Acou Low Tom
timbre(127,42) = BNK_inst("clsdhi",84) ;Clsd Hi Hat
timbre(127,43) = BNK_inst("tom",41) ;Acou Low Tom
timbre(127,44) = BNK_inst("bcymbal",84) ;Open Hi Hat 2
timbre(127,45) = BNK_inst("tom",48) ;Acou Mid Tom
timbre(127,46) = BNK_inst("bcymbal",84) ;Open Hi Hat 1
timbre(127,47) = BNK_inst("tom",48) ;Acou Mid Tom
timbre(127,48) = BNK_inst("tom",55) ;Acou Hi Tom
timbre(127,49) = BNK_inst("cymbal3",72) ;Crash Cym
timbre(127,50) = BNK_inst("tom",55) ;Acou Hi Tom
timbre(127,51) = BNK_inst("bcymbal",84) ;Ride Cym
timbre(127,54) = BNK_inst("bcymbal",84) ;Tambourine
timbre(127,56) = BNK_inst("tom",48) ;Cowbell
timbre(127,60) = BNK_inst("tom",55) ;High Bongo
timbre(127,61) = BNK_inst("tom",41) ;Low Bongo
timbre(127,62) = BNK_inst("tom",55) ;Mt High Conga
timbre(127,63) = BNK_inst("tom",55) ;High Conga
timbre(127,64) = BNK_inst("tom",48) ;Low Conga
timbre(127,65) = BNK_inst("tom",55) ;High Timbale
timbre(127,66) = BNK_inst("tom",41) ;Low Timbale
timbre(127,67) = BNK_inst("snare2",60) ;High Agogo
timbre(127,68) = BNK_inst("snare2",48) ;Low Agogo
timbre(127,69) = BNK_inst("bcymbal",84) ;Cabasa
timbre(127,70) = BNK_inst("bcymbal",84) ;Maracas
timbre(127,71) = BNK_inst("bcymbal",84) ;Smba Whis S
timbre(127,72) = BNK_inst("bcymbal",84) ;Smba Whis L
timbre(127,73) = BNK_inst("bcymbal",84) ;Quijada
timbre(127,75) = BNK_inst("bcymbal",84) ;Claves
Next Topic (CLAD - Creative Labs and Ad Lib (TM) Converter)
Previous Topic (SETSOUND - MSS Sound Configuration Utility)
Group:
Miles Sound System Tools Reference
For technical support, e-mail Miles3@radgametools.com
© Copyright 1991-2007 RAD Game Tools, Inc. All Rights Reserved.